The present invention relates to novel methods and apparatus for increasing the speed of data transfer between computers.
APIxe2x80x94Application Programming Interface
CONFIGMGxe2x80x94Configuration Manager
CPUxe2x80x94Central Processing Unit
DSLxe2x80x94Digital Subscriber Line
Event Signalxe2x80x94Interrupt
Granularityxe2x80x94A period of time within which events can be processed. When interrupts can be processed by a handler within 0.000001 seconds, the term xe2x80x9cmicrosecond granularityxe2x80x9d is applicable.
Handlerxe2x80x94Software that takes control over interrupt and processor exceptions. Technically referenced to as an interrupt service routine (ISR). Interrupts controlled by handlers can be classified into 3 categories: 1xe2x80x94Hardware interrupts (caused by external hardware); 2xe2x80x94software interrupts (caused by executing an TNT instruction); ; 3xe2x80x94Processor exception (generated by a processor when it detects certain programming errors).
I/Oxe2x80x94Input/Output
Interrupt Latencyxe2x80x94The time it takes to service an interrupt
IRQxe2x80x94Interrupt Request
LANxe2x80x94Local Area Network
Pipelinexe2x80x94A buffer or cache where data is staged for transfer. The pipeline acts as an extension of typically one megabyte to the FIFO buffer. The additional memory is taken from RAM.
PITxe2x80x94Programmable Interrupt Timer
UARTxe2x80x94Universal Asynchronous Receiver Transmitter
UIOHxe2x80x94UART Input Output Handler
VxDxe2x80x94Virtual Device Driver
VBDxe2x80x94Virtual Bandwidth Driver
VCDxe2x80x94Virtual Communications Device
VCOMMxe2x80x94Virtual Communications Manager
VMMxe2x80x94Virtual Machine Manager
VPICDxe2x80x94Virtual Programmable Interrupt Controller Device Driver
VTDxe2x80x94Virtual Timer Device Driver
Recent years have seen substantial advancement in regard to the transmission speeds of modems and network cards. However, such increases in transmission speeds have not always been accompanied by corresponding increases in actual communication speeds between computers. As an example, even though modems purportedly having transmission speeds of 56 kbps are available, Microsoft has issued technical reports warning Windows users that communication speeds exceeding 19200 bps may cause loss of data and degrade multi-tasking operations.
In trying to understand why the actual speed of data throughput often does not match the transmission speed of the method and medium connecting computers, i.e., the pipeline, it is important to realize that data must be transferred to and from the pipeline at least as fast as data is transferred over the pipeline in order to maximize throughput. Throughput is often limited by the speed at which such data transfers can be accomplished within a computer. With transmission speeds equal to or greater than 9600 bps, data appears at the end of the pipeline at intervals of less than 1 millisecond. Although the use of buffers can decrease the instantaneous speed at which data in the pipeline needs to be processed, the average response time of a system must be less than 1 millisecond if continuous high speed data transmission is to be supported. Obtaining such a quick average response time is difficult to accomplish, particularly when using a multi-tasking operating system such as Microsoft Windows.
At least part of the difficulty in achieving fast response times is related to the manner in which communications are typically handled. In many systems, I/O devices generate event signals/interrupts when data is sent or received. When such an interrupt occurs, execution of routines for transferring data to or from the I/O device takes place. However, it is not uncommon for the interrupt latency (i.e., the time required for control to be switched between the current process and the interrupt handler) of a computer running Microsoft Windows to exceed 300 milliseconds. Attempts to increase data transmission speed by using buffers to store data that is to be transferred have been made. However, as data transfer must still be accomplished after control is switched, such systems clearly cannot provide the sub-microsecond response times required if buffers are not in use; and they often cannot respond quickly enough even when buffers are in use.
In short, a major bottleneck in transferring data between computers is attributable to the limitations on throughput imposed by the computer software/hardware. Maximum throughput can be attained only if the (typically) serial port is operated at saturation. Without port saturation, data cannot be moved in or out fast enough to sustain maximum bandwidth data transfer rates.
Whether or not they have been previously recognized, slowdowns in data communications related to the speed at which data can be transferred to and from a communications pipeline have existed and continue to exist. Thus, there is a continuing need for improved methods and devices allowing maximum throughput of data through transmission channels to be achieved.
There has now been invented and disclosed herein a novel approach to data transmission which provides significantly higher transmission speeds than do current approaches to this problem. An implementation of this new and novel technology is identified in this document as a Virtual Bandwidth Driver (VBD). The VBD is premised on the finding that, with a faster clock interrupt frequency and higher priority for communication controllers, a computer system""s communication resource management can sustain the maximum throughput of data staged in a buffer memory, i.e., pipeline, with minimum multi-tasking degradation, regardless of protocol, media, or connection type. Increased transmission speed is also obtained by transferring data to and from the pipeline in blocks of (typically) 4096 bits rather than employing the conventional one bit at a time approach. This (1) reduces herky jerky effects in video and distortion in audio; (2) improves multitasking; (3) increases communication throughput; and (4) facilitates lossless data transmission.
VBD functionality is embedded in a computer system""s operating environment by adding software that controls system clock interrupt frequency and interrupt processing, data pipelining, and communication resources. As a result, VBD so manages interrupt latency as to provide granularity in the microsecond range required for high speed data transmission.
In reaching this goal, VBD takes advantage of the fact that the speed of data transmission between computer systems can be increased by utilizing the highest priority interrupts assigned to non-communication devices to control communications. In particular, timer interrupts, which have the highest priority, are used to poll communication buffers to determine whether data needs to be sent or received with such polling replacing the use of data transfer interrupts typically associated with communication devices.
Also, VBD is capable of recognizing that an interrupt which affects the rate of data transfer is not operating at its highest frequency. In this instance VBD so increases that frequency as to speed up data transfer while maintaining xe2x80x9cnormal operationxe2x80x9d of the involved system. For example, in one embodiment of the invention, an I/O handler which polls one or more I/O devices such as Universal Asynchronous Receiver-Transmitters (xe2x80x9cUARTSxe2x80x9d) used with serial ports is mapped to the interrupt of a programmable interrupt timer (xe2x80x9cPITxe2x80x9d) such as the system clock after increasing the frequency at which the PIT/clock generates interrupts.
This results in the lower priority I/O device interrupts being replaced with the I/O device being serviced at the frequency with which the system clock can generate interrupts.
Conventionally, moderate increases in system clock frequency are employed to facilitate communication throughput. In contrast, in implementing the present invention, the clock frequency is increased to a multiple of the base frequency as required by a desired communication speed, thereby sustaining the maximum obtainable bandwidth.
Still another advantage of VBD is that Windows (as one operating system example) is more stable when VBD has been implemented. Specifically, when serial communications devices are used at the maximum UART speed of 115,200 bps, changing tasks repeatedly will cause a fatal Windows error. However, this does not occur after VBD is implemented. In summary, the conventional interrupt activity involved with serial high performance that can cause system instability is removed by VBD.